﻿using Common.DataAnnotations;
using RabbitMQ.Client;
using System;
using System.Collections.Generic;
using System.Text;

namespace Common.RabbitMQ
{
    /// <summary>
    /// 交换机工作模式
    /// </summary>
    public enum ExchangeWorkMode
    {
        /// <summary>
        /// 此模式使用模糊匹配RoutingKey，交换机会将消息转发给匹配的队列（例如队列RoutingKey=wallet.user，发送消息指定的routingKey=wallet.*,那么消息会发送给所有routingKey=wallet开头的队列）
        /// <para>
        /// 消息的RoutingKey设置为 “#”，相当于广播，匹配中所有的队列
        /// </para>
        /// </summary>
        [StringValue(ExchangeType.Topic)]
        Topic,
        /// <summary>
        /// 此模式使用RoutingKey严格匹配，消息只转发给RoutingKey完全匹配的队列
        /// </summary>
        [StringValue(ExchangeType.Direct)]
        Direct,
        /// <summary>
        /// 此模式相当于广播，交换机会将消息发送到所有绑定到交换机的队列
        /// </summary>
        [StringValue(ExchangeType.Fanout)]
        Fanout,
    }
}
